package com.fanghuaiming.test.netty.c5;

import io.netty.bootstrap.Bootstrap;
import io.netty.channel.ChannelInitializer;
import io.netty.channel.nio.NioEventLoopGroup;
import io.netty.channel.socket.nio.NioSocketChannel;
import io.netty.handler.codec.string.StringEncoder;
import java.net.InetSocketAddress;

/****
 * @description:
 * @version:1.0.0
 * @author fanghuaiming
 * @data Created in 2021/9/26 下午9:03
 *
 */
public class HelloClient {
  public static void main(String[] args) throws InterruptedException {
      //1.启动类
      new Bootstrap()
              //2.添加 EvenLoop
              .group(new NioEventLoopGroup())
              //3.选择客户端 channel 实现
                .channel(NioSocketChannel.class)
              //4.添加处理器
                .handler(new ChannelInitializer<NioSocketChannel>() {//只有在连接建立之后才会执行
                    //在连接建立后被调用
                    @Override
                    protected void initChannel(NioSocketChannel ch) throws Exception {
                        ch.pipeline().addLast(new StringEncoder());
                    }
                })
              //发送连接请求
              .connect(new InetSocketAddress("localhost",8080))
              //阻塞方法,知道与服务器的连接建立
              .sync()
              //代表的是连接对象
              .channel()
              //发送数据 调用处理器的方法也就是上面的 new StringEncoder()
              .writeAndFlush("Hello world");
  }
}
